package com.algorithm.priority;/*
 *@Author:DOWN
 *@Date:2022/2/23 16:58
 *@Comment:215. 数组中的第K个最大元素
给定整数数组 nums 和整数 k，请返回数组中第 k 个最大的元素。

请注意，你需要找的是数组排序后的第 k 个最大的元素，而不是第 k 个不同的元素。



示例 1:

输入: [3,2,1,5,6,4] 和 k = 2
输出: 5
示例 2:

输入: [3,2,3,1,2,4,5,5,6] 和 k = 4
输出: 4


提示：

1 <= k <= nums.length <= 104
-104 <= nums[i] <= 104
 */

import java.util.Arrays;
import java.util.PriorityQueue;

public class Solution215 {
    public static int findKthLargest(int[] nums, int k) {
        PriorityQueue<Integer> pq = new PriorityQueue<>((x, y) -> (x-y));
        for (int i = 0; i < k; i++) {
            pq.add(nums[i]);
        }
        for (int i = k; i < nums.length; i++) {
            int one=nums[i];
            int two=pq.peek();
            if (!pq.isEmpty() && nums[i] > pq.peek()) {
                pq.poll();
                pq.add(nums[i]);
            }
        }
        int[] res = new int[k];
        for (int i = k-1; i >=0; i--) {
            res[i] = pq.poll();
        }
        return res[k-1];
    }
    public static void main(String[] ars){
        int[] arrs={3,2,1,5,6,4};
        int one=findKthLargest(arrs,2);
        System.out.println(one);
    }
}
